#ifndef RESOURCEMANAGER_H
#define RESOURCEMANAGER_H

#include "../Config/Export.h"
#include "../Utilities/Singleton.h"
#include "../Core/IResource.h"
#include <vector>

namespace epix {

class SHARED ResourceManager : public Singleton<ResourceManager>
{
    MAKE_SINGLETON(ResourceManager)

    public:

        template <class T> T* get(const std::string &name) const;

        void add(IResource *resource);

        void remove(const std::string &name);
        void remove(IResource *resource);

    private:

        std::vector<IResource*> _resources;

};

#include "ResourceManager.inl"

}

#endif
